home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1995 August: Tool Chest / Dev.CD Aug 95 TC / Dev.CD Aug 95 TC.toast / New System Software Extensions / MacODBC SDK 2.0b1 / ODBC Tools / INCLUDE / SQL.H < prev    next >
Encoding:
C/C++ Source or Header  |  1995-06-13  |  8.6 KB  |  373 lines  |  [TEXT/MPS ]

  1. /*****************************************************************
  2. ** SQL.H - This is the the main include for ODBC Core functions.
  3. **
  4. ** preconditions:
  5. **    #include "windows.h"
  6. **
  7. ** (C) Copyright 1990 - 1994 By Microsoft Corp.
  8. ** (c) 1995 by Visigenic Software, Inc., all rights reserved.
  9. **
  10. **    Updated 5/12/93 for 2.00 specification
  11. **    Updated 5/23/94 for 2.01 specification
  12. **    Updated 11/10/94 for 2.10 specification
  13. *********************************************************************/
  14.  
  15. #ifndef __SQL
  16. #define __SQL
  17.  
  18. #ifndef MACODBC
  19.     #define MACODBC 0
  20. #endif
  21.  
  22. #if MACODBC    // ++
  23.     #ifndef WIN2MAC_H
  24.         #include "win2mac.h"
  25.     #endif
  26. #endif // MACODBC ++
  27.  
  28. /*
  29. * ODBCVER            ODBC version number (0x0200).    To exclude
  30. *                    definitions introduced in version 2.0 (or above)
  31. *                    #define ODBCVER 0x0100 before #including <sql.h>
  32. */
  33.  
  34. /* If ODBCVER is not defined, assume version 2.10 */
  35. #ifndef ODBCVER
  36. #define ODBCVER    0x0210
  37. #endif
  38.  
  39. #ifdef __cplusplus
  40. extern "C" {                        /* Assume C declarations for C++   */
  41. #endif    /* __cplusplus */
  42.  
  43. /* generally useful constants */
  44. #if (ODBCVER >= 0x0200)
  45. #define SQL_SPEC_MAJOR              2        /* Major version of specification  */
  46. #define SQL_SPEC_MINOR              10    /* Minor version of specification  */
  47. #define SQL_SPEC_STRING     "02.10"        /* String constant for version       */
  48. #endif    /* ODBCVER >= 0x0200 */
  49. #define SQL_SQLSTATE_SIZE          5        /* size of SQLSTATE                */
  50. #define SQL_MAX_MESSAGE_LENGTH    512        /* message buffer size               */
  51. #define SQL_MAX_DSN_LENGTH         32        /* maximum data source name size   */
  52.  
  53. /* RETCODEs */
  54. #define SQL_INVALID_HANDLE        (-2)
  55. #define SQL_ERROR                (-1)
  56. #define SQL_SUCCESS             0
  57. #define SQL_SUCCESS_WITH_INFO    1
  58. #define SQL_NO_DATA_FOUND        100
  59.  
  60. /* Standard SQL datatypes, using ANSI type numbering */
  61. #define SQL_CHAR                1
  62. #define SQL_NUMERIC             2
  63. #define SQL_DECIMAL             3
  64. #define SQL_INTEGER             4
  65. #define SQL_SMALLINT            5
  66. #define SQL_FLOAT                6
  67. #define SQL_REAL                7
  68. #define SQL_DOUBLE                8
  69. #define SQL_VARCHAR             12
  70.  
  71. #define SQL_TYPE_MIN            SQL_CHAR
  72. #define SQL_TYPE_NULL            0
  73. #define SQL_TYPE_MAX            SQL_VARCHAR
  74.  
  75. /* C datatype to SQL datatype mapping    SQL types
  76.                                         ------------------- */
  77. #define SQL_C_CHAR      SQL_CHAR            /* CHAR, VARCHAR, DECIMAL, NUMERIC */
  78. #define SQL_C_LONG      SQL_INTEGER        /* INTEGER            */
  79. #define SQL_C_SHORT   SQL_SMALLINT        /* SMALLINT            */
  80. #define SQL_C_FLOAT   SQL_REAL            /* REAL                */
  81. #define SQL_C_DOUBLE  SQL_DOUBLE        /* FLOAT, DOUBLE    */
  82. #define SQL_C_DEFAULT 99
  83.  
  84. /* NULL status constants.  These are used in SQLColumns, SQLColAttributes,
  85. SQLDescribeCol, SQLDescribeParam, and SQLSpecialColumns to describe the
  86. nullablity of a column in a table. */
  87. #define SQL_NO_NULLS                0
  88. #define SQL_NULLABLE                1
  89. #define SQL_NULLABLE_UNKNOWN        2
  90.  
  91. /* Special length values */
  92. #define SQL_NULL_DATA                (-1)
  93. #define SQL_DATA_AT_EXEC            (-2)
  94. #define SQL_NTS                     (-3)
  95.  
  96. /* SQLFreeStmt defines */
  97. #define SQL_CLOSE                    0
  98. #define SQL_DROP                    1
  99. #define SQL_UNBIND                    2
  100. #define SQL_RESET_PARAMS            3
  101.  
  102. /* SQLTransact defines */
  103. #define SQL_COMMIT                    0
  104. #define SQL_ROLLBACK                1
  105.  
  106. /* SQLColAttributes defines */
  107. #define SQL_COLUMN_COUNT            0
  108. #define SQL_COLUMN_NAME             1
  109. #define SQL_COLUMN_TYPE             2
  110. #define SQL_COLUMN_LENGTH           3
  111. #define SQL_COLUMN_PRECISION        4
  112. #define SQL_COLUMN_SCALE            5
  113. #define SQL_COLUMN_DISPLAY_SIZE     6
  114. #define SQL_COLUMN_NULLABLE         7
  115. #define SQL_COLUMN_UNSIGNED         8
  116. #define SQL_COLUMN_MONEY            9
  117. #define SQL_COLUMN_UPDATABLE        10
  118. #define SQL_COLUMN_AUTO_INCREMENT    11
  119. #define SQL_COLUMN_CASE_SENSITIVE    12
  120. #define SQL_COLUMN_SEARCHABLE        13
  121. #define SQL_COLUMN_TYPE_NAME        14
  122. #if (ODBCVER >= 0x0200)
  123. #define SQL_COLUMN_TABLE_NAME        15
  124. #define SQL_COLUMN_OWNER_NAME        16
  125. #define SQL_COLUMN_QUALIFIER_NAME    17
  126. #define SQL_COLUMN_LABEL            18
  127. #define SQL_COLATT_OPT_MAX            SQL_COLUMN_LABEL
  128. #else
  129. #define SQL_COLATT_OPT_MAX            SQL_COLUMN_TYPE_NAME
  130. #endif    /* ODBCVER >= 0x0200 */
  131. #define SQL_COLUMN_DRIVER_START        1000
  132.  
  133. #define    SQL_COLATT_OPT_MIN            SQL_COLUMN_COUNT
  134.  
  135. /* SQLColAttributes subdefines for SQL_COLUMN_UPDATABLE */
  136. #define SQL_ATTR_READONLY            0
  137. #define SQL_ATTR_WRITE                1
  138. #define SQL_ATTR_READWRITE_UNKNOWN    2
  139.  
  140. /* SQLColAttributes subdefines for SQL_COLUMN_SEARCHABLE */
  141. /* These are also used by SQLGetInfo                     */
  142. #define SQL_UNSEARCHABLE            0
  143. #define SQL_LIKE_ONLY                1
  144. #define SQL_ALL_EXCEPT_LIKE         2
  145. #define SQL_SEARCHABLE                3
  146.  
  147. /* SQLError defines */
  148. #define SQL_NULL_HENV                0
  149. #define SQL_NULL_HDBC                0
  150. #define SQL_NULL_HSTMT                0
  151.  
  152. /* environment specific definitions */
  153. #ifndef EXPORT
  154. #define EXPORT  _export
  155. #endif
  156.  
  157. #if ! MACODBC   // -+
  158.  
  159. #ifdef WIN32
  160. #define SQL_API __stdcall
  161. #else
  162. #define SQL_API EXPORT CALLBACK
  163. #endif
  164.  
  165.     #define SQL_PRE_API
  166.     #define RETCODE_SQL_API RETCODE SQL_API
  167.  
  168. #else // MACODBC   -+
  169.  
  170.     #define SQL_API
  171.     #define SQL_PRE_API pascal
  172.     #define RETCODE_SQL_API pascal RETCODE
  173.  
  174. #endif // MACODBC  -+
  175.  
  176. #ifndef RC_INVOKED
  177. /* SQL portable types for C */
  178. typedef unsigned char       UCHAR;
  179. typedef signed char         SCHAR;
  180. typedef long int            SDWORD;
  181. typedef short int           SWORD;
  182. typedef unsigned long int   UDWORD;
  183. typedef unsigned short int  UWORD;
  184. #if (ODBCVER >= 0x0200)
  185. typedef signed long         SLONG;
  186. typedef signed short        SSHORT;
  187. typedef unsigned long        ULONG;
  188. typedef unsigned short        USHORT;
  189. #endif    /* ODBCVER >= 0x0200 */
  190. typedef double              SDOUBLE;
  191. #if ! MACODBC   // -+
  192.     #ifdef WIN32
  193.     typedef double             LDOUBLE; /* long double == short double in Win32 */
  194.     #else
  195.     typedef long double     LDOUBLE;
  196.     #endif
  197. #else // MACODBC   -+
  198.     typedef long double     LDOUBLE;
  199. #endif // MACODBC  -+
  200. typedef float               SFLOAT;
  201.  
  202. typedef void FAR *          PTR;
  203.  
  204. typedef void FAR *          HENV;
  205. typedef void FAR *          HDBC;
  206. typedef void FAR *          HSTMT;
  207.  
  208. typedef signed short        RETCODE;
  209.  
  210.  
  211. /* Core Function Prototypes */
  212.  
  213. RETCODE_SQL_API
  214. SQLAllocConnect(
  215.     HENV        henv,
  216.     HDBC   FAR *phdbc);
  217.  
  218. RETCODE_SQL_API
  219. SQLAllocEnv(
  220.     HENV   FAR *phenv);
  221.  
  222. RETCODE_SQL_API
  223. SQLAllocStmt(
  224.     HDBC        hdbc,
  225.     HSTMT  FAR *phstmt);
  226.  
  227. RETCODE_SQL_API
  228. SQLBindCol(
  229.     HSTMT       hstmt,
  230.     UWORD       icol,
  231.     SWORD       fCType,
  232.     PTR         rgbValue,
  233.     SDWORD      cbValueMax,
  234.     SDWORD FAR *pcbValue);
  235.  
  236. RETCODE_SQL_API
  237. SQLCancel(
  238.     HSTMT       hstmt);
  239.  
  240. RETCODE_SQL_API
  241. SQLColAttributes(
  242.     HSTMT       hstmt,
  243.     UWORD       icol,
  244.     UWORD       fDescType,
  245.     PTR         rgbDesc,
  246.     SWORD       cbDescMax,
  247.     SWORD  FAR *pcbDesc,
  248.     SDWORD FAR *pfDesc);
  249.  
  250. RETCODE_SQL_API
  251. SQLConnect(
  252.     HDBC        hdbc,
  253.     UCHAR  FAR *szDSN,
  254.     SWORD       cbDSN,
  255.     UCHAR  FAR *szUID,
  256.     SWORD       cbUID,
  257.     UCHAR  FAR *szAuthStr,
  258.     SWORD       cbAuthStr);
  259.  
  260. RETCODE_SQL_API
  261. SQLDescribeCol(
  262.     HSTMT       hstmt,
  263.     UWORD       icol,
  264.     UCHAR  FAR *szColName,
  265.     SWORD       cbColNameMax,
  266.     SWORD  FAR *pcbColName,
  267.     SWORD  FAR *pfSqlType,
  268.     UDWORD FAR *pcbColDef,
  269.     SWORD  FAR *pibScale,
  270.     SWORD  FAR *pfNullable);
  271.  
  272. RETCODE_SQL_API
  273. SQLDisconnect(
  274.     HDBC        hdbc);
  275.  
  276. RETCODE_SQL_API
  277. SQLError(
  278.     HENV        henv,
  279.     HDBC        hdbc,
  280.     HSTMT       hstmt,
  281.     UCHAR  FAR *szSqlState,
  282.     SDWORD FAR *pfNativeError,
  283.     UCHAR  FAR *szErrorMsg,
  284.     SWORD       cbErrorMsgMax,
  285.     SWORD  FAR *pcbErrorMsg);
  286.  
  287. RETCODE_SQL_API
  288. SQLExecDirect(
  289.     HSTMT       hstmt,
  290.     UCHAR  FAR *szSqlStr,
  291.     SDWORD      cbSqlStr);
  292.  
  293. RETCODE_SQL_API
  294. SQLExecute(
  295.     HSTMT       hstmt);
  296.  
  297. RETCODE_SQL_API
  298. SQLFetch(
  299.     HSTMT       hstmt);
  300.  
  301. RETCODE_SQL_API
  302. SQLFreeConnect(
  303.     HDBC        hdbc);
  304.  
  305. RETCODE_SQL_API
  306. SQLFreeEnv(
  307.     HENV        henv);
  308.  
  309. RETCODE_SQL_API
  310. SQLFreeStmt(
  311.     HSTMT       hstmt,
  312.     UWORD       fOption);
  313.  
  314. RETCODE_SQL_API
  315. SQLGetCursorName(
  316.     HSTMT       hstmt,
  317.     UCHAR  FAR *szCursor,
  318.     SWORD       cbCursorMax,
  319.     SWORD  FAR *pcbCursor);
  320.  
  321. RETCODE_SQL_API
  322. SQLNumResultCols(
  323.     HSTMT       hstmt,
  324.     SWORD  FAR *pccol);
  325.  
  326. RETCODE_SQL_API
  327. SQLPrepare(
  328.     HSTMT       hstmt,
  329.     UCHAR  FAR *szSqlStr,
  330.     SDWORD      cbSqlStr);
  331.  
  332. RETCODE_SQL_API
  333. SQLRowCount(
  334.     HSTMT       hstmt,
  335.     SDWORD FAR *pcrow);
  336.  
  337. RETCODE_SQL_API
  338. SQLSetCursorName(
  339.     HSTMT       hstmt,
  340.     UCHAR  FAR *szCursor,
  341.     SWORD       cbCursor);
  342.  
  343. RETCODE_SQL_API
  344. SQLTransact(
  345.     HENV        henv,
  346.     HDBC        hdbc,
  347.     UWORD       fType);
  348.  
  349. #endif /* RC_INVOKED */
  350.  
  351. /*    Deprecrated functions from prior versions of ODBC */
  352. #ifndef RC_INVOKED
  353.  
  354. RETCODE_SQL_API
  355. SQLSetParam(        /*    Use SQLBindParameter */
  356.     HSTMT       hstmt,
  357.     UWORD       ipar,
  358.     SWORD       fCType,
  359.     SWORD       fSqlType,
  360.     UDWORD      cbColDef,
  361.     SWORD       ibScale,
  362.     PTR         rgbValue,
  363.     SDWORD FAR *pcbValue);
  364.  
  365. #endif /* RC_INVOKED */
  366.  
  367.  
  368. #ifdef __cplusplus
  369. }                                    /* End of extern "C" { */
  370. #endif    /* __cplusplus */
  371.  
  372. #endif  /* #ifndef __SQL */
  373.